home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / windownt / copyte.zip / CDTEST2.C < prev    next >
C/C++ Source or Header  |  1993-09-09  |  4KB  |  136 lines

  1. /*******************************************************************************
  2. *                                                                                                         *
  3. *   CDTEST2: Second half of the pair, virtually identical to the first.        *
  4. *                                                                                                         *
  5. *   9/9/93 by Mark Gamber                                                      * 
  6. *                                                                                                         *
  7. *******************************************************************************/
  8.  
  9. #include "windows.h"
  10. #include "memory.h"
  11.  
  12. // -----------------------------------------------------------------------------
  13.  
  14. BOOL WINAPI MainDlgProc( HWND, UINT, WPARAM, LPARAM );
  15.  
  16. // -----------------------------------------------------------------------------
  17.  
  18. HINSTANCE hInst;
  19.  
  20. // -----------------------------------------------------------------------------
  21.  
  22. int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmd, int nShow )
  23. {
  24.     hInst = hInstance;
  25.     DialogBox( hInstance, MAKEINTRESOURCE( 10000 ), NULL, MainDlgProc );
  26.     return( FALSE );
  27. }
  28.  
  29.  
  30. BOOL WINAPI MainDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam )
  31. {
  32.     switch( msg )
  33.     {
  34.         case WM_INITDIALOG:
  35.         {
  36.             char szWinName[ 32 ];
  37.             HWND hOther;
  38.  
  39.             LoadString( hInst, 100, szWinName, 32 );          //  Title of other half
  40.             hOther = FindWindow( (LPSTR)0, szWinName );         //  Locate other half
  41.             if( ! hOther )                                          //  If window not found...
  42.             {
  43.                 LoadString( hInst, 101, szWinName, 32 );
  44.                 WinExec( szWinName, SW_SHOW );            //  Attempt to start program
  45.                 Sleep( 500 );                                                //  Wait a bit...
  46.                 LoadString( hInst, 100, szWinName, 32 );        //  Now try the window
  47.                 hOther = FindWindow( (LPSTR)0, szWinName );
  48.                 if( ! hOther )
  49.                 {                                              //  If still not there, forget it
  50.                     EndDialog( hDlg, FALSE );
  51.                     return( FALSE );
  52.                 }
  53.             }
  54.             SendMessage( GetDlgItem( hDlg, 102 ), EM_LIMITTEXT, 127, 0 );
  55.             return( TRUE );
  56.         }
  57.  
  58.         case WM_COPYDATA:
  59.         {
  60.             COPYDATASTRUCT *cds;
  61.             char str[ 128 ];
  62.  
  63.            cds = (COPYDATASTRUCT *)lParam;
  64.             if( cds->dwData == 1 )
  65.             {
  66.                 SetDlgItemText( hDlg, 103, "" );
  67.                 return( TRUE );
  68.             }
  69.             if( cds->dwData == 0 )
  70.             {
  71.                 memcpy( str, cds->lpData, cds->cbData );
  72.                 str[ cds->cbData ] = '\0';
  73.                 SetDlgItemText( hDlg, 103, str );
  74.                 return( TRUE );
  75.             }
  76.             return( FALSE );
  77.         }
  78.  
  79.         case WM_COMMAND:
  80.         {
  81.             if( wParam == IDCANCEL )
  82.             {
  83.                 EndDialog( hDlg, TRUE );
  84.                 return( TRUE );
  85.             }
  86.             if( wParam == 100 )                         //  Copy from here to there...
  87.             {
  88.                 char szWinName[ 32 ];
  89.                 char szText[ 128 ];
  90.                 LONG lResult;
  91.                 HWND hOther;
  92.             COPYDATASTRUCT cds;
  93.  
  94.                 if( ! GetDlgItemText( hDlg, 102, szText, 128 ) )
  95.                     break;
  96.  
  97.                 LoadString( hInst, 100, szWinName, 32 );
  98.                 hOther = FindWindow( (LPSTR)0, szWinName );
  99.                 if( ! hOther )
  100.                     break;
  101.  
  102.                 cds.dwData = 0;
  103.                 cds.lpData = (LPSTR)szText;
  104.                 cds.cbData = lstrlen( szText );
  105.                 lResult = SendMessage( hOther, WM_COPYDATA, (WPARAM)hDlg,
  106.                                               (LPARAM)(COPYDATASTRUCT *)&cds );
  107.                 break;
  108.             }
  109.             if( wParam == 101 )
  110.             {
  111.                 char szWinName[ 32 ];
  112.                 char szText[ 128 ];
  113.                 LONG lResult;
  114.                 HWND hOther;
  115.             COPYDATASTRUCT cds;
  116.  
  117.                 LoadString( hInst, 100, szWinName, 32 );
  118.                 hOther = FindWindow( (LPSTR)0, szWinName );
  119.                 if( ! hOther )
  120.                     break;
  121.  
  122.                 cds.dwData = 1;
  123.                 cds.lpData = (LPSTR)0;
  124.                 cds.cbData = 0;
  125.                 lResult = SendMessage( hOther, WM_COPYDATA, (WPARAM)hDlg,
  126.                                               (LPARAM)(COPYDATASTRUCT *)&cds );
  127.                 break;
  128.             }
  129.             break;
  130.         }
  131.     }
  132.     return( FALSE );
  133. }
  134.  
  135.  
  136.